/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package bpmn.impl;

import bpmn.ActivityType;
import bpmn.AdHocOrderingTypes;
import bpmn.AdHocProcess;
import bpmn.Annotation;
import bpmn.ArtifactInput;
import bpmn.ArtifactOutput;
import bpmn.ArtifactType;
import bpmn.AssignTimeType;
import bpmn.Assignment;
import bpmn.Association;
import bpmn.BpmnFactory;
import bpmn.BpmnPackage;
import bpmn.BusinessProcessDiagram;
import bpmn.Cancel;
import bpmn.Category;
import bpmn.Compensate;
import bpmn.Complex;
import bpmn.Condition;
import bpmn.ConditionType;
import bpmn.Conditional;
import bpmn.DataBased;
import bpmn.DataObject;
import bpmn.DirectionType;
import bpmn.Embedded;
import bpmn.End;
import bpmn.Entity;
import bpmn.EventBased;
import bpmn.EventDetailType;
import bpmn.EventType;
import bpmn.Exclusive;
import bpmn.ExclusiveType;
import bpmn.Expression;
import bpmn.Gate;
import bpmn.GatewayType;
import bpmn.Group;
import bpmn.ImplementationType;
import bpmn.Inclusive;
import bpmn.InputSet;
import bpmn.Intermediate;
import bpmn.Lane;
import bpmn.Link;
import bpmn.LoopType;
import bpmn.MI_FlowConditionType;
import bpmn.MI_OrderingType;
import bpmn.Manual;
import bpmn.Message;
import bpmn.MessageEvent;
import bpmn.MessageFlow;
import bpmn.MultiInstanceLoopActivity;
import bpmn.None;
import bpmn.OutputSet;
import bpmn.Parallel;
import bpmn.Participant;
import bpmn.ParticipantType;
import bpmn.Pool;
import bpmn.ProcessType;
import bpmn.Property;
import bpmn.Receive;
import bpmn.ReferenceSubProcess;
import bpmn.ReferenceTask;
import bpmn.Reusable;
import bpmn.Role;
import bpmn.Script;
import bpmn.Send;
import bpmn.SequenceFlow;
import bpmn.Service;
import bpmn.Signal;
import bpmn.StandardLoopActivity;
import bpmn.Start;
import bpmn.StatusType;
import bpmn.SubProcess;
import bpmn.SubProcessType;
import bpmn.Task;
import bpmn.TaskType;
import bpmn.Terminate;
import bpmn.TestTimeType;
import bpmn.TimeDateExpression;
import bpmn.Timer;
import bpmn.Transaction;
import bpmn.TransactionMethodType;
import bpmn.User;
import bpmn.WebService;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.impl.EFactoryImpl;

import org.eclipse.emf.ecore.plugin.EcorePlugin;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Factory</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class BpmnFactoryImpl extends EFactoryImpl implements BpmnFactory {
	/**
	 * Creates the default factory implementation.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static BpmnFactory init() {
		try {
			BpmnFactory theBpmnFactory = (BpmnFactory)EPackage.Registry.INSTANCE.getEFactory("http://esi.uclm.es/metamodels/bpmn"); 
			if (theBpmnFactory != null) {
				return theBpmnFactory;
			}
		}
		catch (Exception exception) {
			EcorePlugin.INSTANCE.log(exception);
		}
		return new BpmnFactoryImpl();
	}

	/**
	 * Creates an instance of the factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public BpmnFactoryImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EObject create(EClass eClass) {
		switch (eClass.getClassifierID()) {
			case BpmnPackage.AD_HOC_PROCESS: return createAdHocProcess();
			case BpmnPackage.ANNOTATION: return createAnnotation();
			case BpmnPackage.ARTIFACT_INPUT: return createArtifactInput();
			case BpmnPackage.ARTIFACT_OUTPUT: return createArtifactOutput();
			case BpmnPackage.ASSIGNMENT: return createAssignment();
			case BpmnPackage.ASSOCIATION: return createAssociation();
			case BpmnPackage.BUSINESS_PROCESS_DIAGRAM: return createBusinessProcessDiagram();
			case BpmnPackage.CANCEL: return createCancel();
			case BpmnPackage.CATEGORY: return createCategory();
			case BpmnPackage.COMPENSATE: return createCompensate();
			case BpmnPackage.COMPLEX: return createComplex();
			case BpmnPackage.CONDITION: return createCondition();
			case BpmnPackage.CONDITIONAL: return createConditional();
			case BpmnPackage.DATA_BASED: return createDataBased();
			case BpmnPackage.DATA_OBJECT: return createDataObject();
			case BpmnPackage.EMBEDDED: return createEmbedded();
			case BpmnPackage.END: return createEnd();
			case BpmnPackage.ENTITY: return createEntity();
			case BpmnPackage.ERROR: return createError();
			case BpmnPackage.EVENT_BASED: return createEventBased();
			case BpmnPackage.EXCLUSIVE: return createExclusive();
			case BpmnPackage.EXPRESSION: return createExpression();
			case BpmnPackage.GATE: return createGate();
			case BpmnPackage.GROUP: return createGroup();
			case BpmnPackage.INCLUSIVE: return createInclusive();
			case BpmnPackage.INPUT_SET: return createInputSet();
			case BpmnPackage.INTERMEDIATE: return createIntermediate();
			case BpmnPackage.LANE: return createLane();
			case BpmnPackage.LINK: return createLink();
			case BpmnPackage.MANUAL: return createManual();
			case BpmnPackage.MESSAGE_EVENT: return createMessageEvent();
			case BpmnPackage.MESSAGE: return createMessage();
			case BpmnPackage.MESSAGE_FLOW: return createMessageFlow();
			case BpmnPackage.MULTI_INSTANCE_LOOP_ACTIVITY: return createMultiInstanceLoopActivity();
			case BpmnPackage.NONE: return createNone();
			case BpmnPackage.OUTPUT_SET: return createOutputSet();
			case BpmnPackage.PARALLEL: return createParallel();
			case BpmnPackage.PARTICIPANT: return createParticipant();
			case BpmnPackage.POOL: return createPool();
			case BpmnPackage.PROCESS: return createProcess();
			case BpmnPackage.PROPERTY: return createProperty();
			case BpmnPackage.RECEIVE: return createReceive();
			case BpmnPackage.REFERENCE_SUB_PROCESS: return createReferenceSubProcess();
			case BpmnPackage.REFERENCE_TASK: return createReferenceTask();
			case BpmnPackage.REUSABLE: return createReusable();
			case BpmnPackage.ROLE: return createRole();
			case BpmnPackage.SCRIPT: return createScript();
			case BpmnPackage.SEND: return createSend();
			case BpmnPackage.SEQUENCE_FLOW: return createSequenceFlow();
			case BpmnPackage.SERVICE: return createService();
			case BpmnPackage.SIGNAL: return createSignal();
			case BpmnPackage.STANDARD_LOOP_ACTIVITY: return createStandardLoopActivity();
			case BpmnPackage.START: return createStart();
			case BpmnPackage.SUB_PROCESS: return createSubProcess();
			case BpmnPackage.TASK: return createTask();
			case BpmnPackage.TERMINATE: return createTerminate();
			case BpmnPackage.TIME_DATE_EXPRESSION: return createTimeDateExpression();
			case BpmnPackage.TIMER: return createTimer();
			case BpmnPackage.TRANSACTION: return createTransaction();
			case BpmnPackage.USER: return createUser();
			case BpmnPackage.WEB_SERVICE: return createWebService();
			default:
				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
		}
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object createFromString(EDataType eDataType, String initialValue) {
		switch (eDataType.getClassifierID()) {
			case BpmnPackage.ACTIVITY_TYPE:
				return createActivityTypeFromString(eDataType, initialValue);
			case BpmnPackage.AD_HOC_ORDERING_TYPES:
				return createAdHocOrderingTypesFromString(eDataType, initialValue);
			case BpmnPackage.ARTIFACT_TYPE:
				return createArtifactTypeFromString(eDataType, initialValue);
			case BpmnPackage.ASSIGN_TIME_TYPE:
				return createAssignTimeTypeFromString(eDataType, initialValue);
			case BpmnPackage.CONDITION_TYPE:
				return createConditionTypeFromString(eDataType, initialValue);
			case BpmnPackage.DIRECTION_TYPE:
				return createDirectionTypeFromString(eDataType, initialValue);
			case BpmnPackage.EVENT_DETAIL_TYPE:
				return createEventDetailTypeFromString(eDataType, initialValue);
			case BpmnPackage.EVENT_TYPE:
				return createEventTypeFromString(eDataType, initialValue);
			case BpmnPackage.EXCLUSIVE_TYPE:
				return createExclusiveTypeFromString(eDataType, initialValue);
			case BpmnPackage.GATEWAY_TYPE:
				return createGatewayTypeFromString(eDataType, initialValue);
			case BpmnPackage.IMPLEMENTATION_TYPE:
				return createImplementationTypeFromString(eDataType, initialValue);
			case BpmnPackage.LOOP_TYPE:
				return createLoopTypeFromString(eDataType, initialValue);
			case BpmnPackage.MI_FLOW_CONDITION_TYPE:
				return createMI_FlowConditionTypeFromString(eDataType, initialValue);
			case BpmnPackage.MI_ORDERING_TYPE:
				return createMI_OrderingTypeFromString(eDataType, initialValue);
			case BpmnPackage.PARTICIPANT_TYPE:
				return createParticipantTypeFromString(eDataType, initialValue);
			case BpmnPackage.PROCESS_TYPE:
				return createProcessTypeFromString(eDataType, initialValue);
			case BpmnPackage.STATUS_TYPE:
				return createStatusTypeFromString(eDataType, initialValue);
			case BpmnPackage.SUB_PROCESS_TYPE:
				return createSubProcessTypeFromString(eDataType, initialValue);
			case BpmnPackage.TASK_TYPE:
				return createTaskTypeFromString(eDataType, initialValue);
			case BpmnPackage.TEST_TIME_TYPE:
				return createTestTimeTypeFromString(eDataType, initialValue);
			case BpmnPackage.TRANSACTION_METHOD_TYPE:
				return createTransactionMethodTypeFromString(eDataType, initialValue);
			default:
				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
		}
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public String convertToString(EDataType eDataType, Object instanceValue) {
		switch (eDataType.getClassifierID()) {
			case BpmnPackage.ACTIVITY_TYPE:
				return convertActivityTypeToString(eDataType, instanceValue);
			case BpmnPackage.AD_HOC_ORDERING_TYPES:
				return convertAdHocOrderingTypesToString(eDataType, instanceValue);
			case BpmnPackage.ARTIFACT_TYPE:
				return convertArtifactTypeToString(eDataType, instanceValue);
			case BpmnPackage.ASSIGN_TIME_TYPE:
				return convertAssignTimeTypeToString(eDataType, instanceValue);
			case BpmnPackage.CONDITION_TYPE:
				return convertConditionTypeToString(eDataType, instanceValue);
			case BpmnPackage.DIRECTION_TYPE:
				return convertDirectionTypeToString(eDataType, instanceValue);
			case BpmnPackage.EVENT_DETAIL_TYPE:
				return convertEventDetailTypeToString(eDataType, instanceValue);
			case BpmnPackage.EVENT_TYPE:
				return convertEventTypeToString(eDataType, instanceValue);
			case BpmnPackage.EXCLUSIVE_TYPE:
				return convertExclusiveTypeToString(eDataType, instanceValue);
			case BpmnPackage.GATEWAY_TYPE:
				return convertGatewayTypeToString(eDataType, instanceValue);
			case BpmnPackage.IMPLEMENTATION_TYPE:
				return convertImplementationTypeToString(eDataType, instanceValue);
			case BpmnPackage.LOOP_TYPE:
				return convertLoopTypeToString(eDataType, instanceValue);
			case BpmnPackage.MI_FLOW_CONDITION_TYPE:
				return convertMI_FlowConditionTypeToString(eDataType, instanceValue);
			case BpmnPackage.MI_ORDERING_TYPE:
				return convertMI_OrderingTypeToString(eDataType, instanceValue);
			case BpmnPackage.PARTICIPANT_TYPE:
				return convertParticipantTypeToString(eDataType, instanceValue);
			case BpmnPackage.PROCESS_TYPE:
				return convertProcessTypeToString(eDataType, instanceValue);
			case BpmnPackage.STATUS_TYPE:
				return convertStatusTypeToString(eDataType, instanceValue);
			case BpmnPackage.SUB_PROCESS_TYPE:
				return convertSubProcessTypeToString(eDataType, instanceValue);
			case BpmnPackage.TASK_TYPE:
				return convertTaskTypeToString(eDataType, instanceValue);
			case BpmnPackage.TEST_TIME_TYPE:
				return convertTestTimeTypeToString(eDataType, instanceValue);
			case BpmnPackage.TRANSACTION_METHOD_TYPE:
				return convertTransactionMethodTypeToString(eDataType, instanceValue);
			default:
				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
		}
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public AdHocProcess createAdHocProcess() {
		AdHocProcessImpl adHocProcess = new AdHocProcessImpl();
		return adHocProcess;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Annotation createAnnotation() {
		AnnotationImpl annotation = new AnnotationImpl();
		return annotation;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ArtifactInput createArtifactInput() {
		ArtifactInputImpl artifactInput = new ArtifactInputImpl();
		return artifactInput;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ArtifactOutput createArtifactOutput() {
		ArtifactOutputImpl artifactOutput = new ArtifactOutputImpl();
		return artifactOutput;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Assignment createAssignment() {
		AssignmentImpl assignment = new AssignmentImpl();
		return assignment;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Association createAssociation() {
		AssociationImpl association = new AssociationImpl();
		return association;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public BusinessProcessDiagram createBusinessProcessDiagram() {
		BusinessProcessDiagramImpl businessProcessDiagram = new BusinessProcessDiagramImpl();
		return businessProcessDiagram;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Cancel createCancel() {
		CancelImpl cancel = new CancelImpl();
		return cancel;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Category createCategory() {
		CategoryImpl category = new CategoryImpl();
		return category;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Compensate createCompensate() {
		CompensateImpl compensate = new CompensateImpl();
		return compensate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Complex createComplex() {
		ComplexImpl complex = new ComplexImpl();
		return complex;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Condition createCondition() {
		ConditionImpl condition = new ConditionImpl();
		return condition;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Conditional createConditional() {
		ConditionalImpl conditional = new ConditionalImpl();
		return conditional;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public DataBased createDataBased() {
		DataBasedImpl dataBased = new DataBasedImpl();
		return dataBased;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public DataObject createDataObject() {
		DataObjectImpl dataObject = new DataObjectImpl();
		return dataObject;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Embedded createEmbedded() {
		EmbeddedImpl embedded = new EmbeddedImpl();
		return embedded;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public End createEnd() {
		EndImpl end = new EndImpl();
		return end;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Entity createEntity() {
		EntityImpl entity = new EntityImpl();
		return entity;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public bpmn.Error createError() {
		ErrorImpl error = new ErrorImpl();
		return error;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EventBased createEventBased() {
		EventBasedImpl eventBased = new EventBasedImpl();
		return eventBased;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Exclusive createExclusive() {
		ExclusiveImpl exclusive = new ExclusiveImpl();
		return exclusive;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Expression createExpression() {
		ExpressionImpl expression = new ExpressionImpl();
		return expression;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Gate createGate() {
		GateImpl gate = new GateImpl();
		return gate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Group createGroup() {
		GroupImpl group = new GroupImpl();
		return group;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Inclusive createInclusive() {
		InclusiveImpl inclusive = new InclusiveImpl();
		return inclusive;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public InputSet createInputSet() {
		InputSetImpl inputSet = new InputSetImpl();
		return inputSet;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Intermediate createIntermediate() {
		IntermediateImpl intermediate = new IntermediateImpl();
		return intermediate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Lane createLane() {
		LaneImpl lane = new LaneImpl();
		return lane;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Link createLink() {
		LinkImpl link = new LinkImpl();
		return link;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Manual createManual() {
		ManualImpl manual = new ManualImpl();
		return manual;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public MessageEvent createMessageEvent() {
		MessageEventImpl messageEvent = new MessageEventImpl();
		return messageEvent;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Message createMessage() {
		MessageImpl message = new MessageImpl();
		return message;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public MessageFlow createMessageFlow() {
		MessageFlowImpl messageFlow = new MessageFlowImpl();
		return messageFlow;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public MultiInstanceLoopActivity createMultiInstanceLoopActivity() {
		MultiInstanceLoopActivityImpl multiInstanceLoopActivity = new MultiInstanceLoopActivityImpl();
		return multiInstanceLoopActivity;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public None createNone() {
		NoneImpl none = new NoneImpl();
		return none;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public OutputSet createOutputSet() {
		OutputSetImpl outputSet = new OutputSetImpl();
		return outputSet;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Parallel createParallel() {
		ParallelImpl parallel = new ParallelImpl();
		return parallel;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Participant createParticipant() {
		ParticipantImpl participant = new ParticipantImpl();
		return participant;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Pool createPool() {
		PoolImpl pool = new PoolImpl();
		return pool;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public bpmn.Process createProcess() {
		ProcessImpl process = new ProcessImpl();
		return process;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Property createProperty() {
		PropertyImpl property = new PropertyImpl();
		return property;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Receive createReceive() {
		ReceiveImpl receive = new ReceiveImpl();
		return receive;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ReferenceSubProcess createReferenceSubProcess() {
		ReferenceSubProcessImpl referenceSubProcess = new ReferenceSubProcessImpl();
		return referenceSubProcess;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ReferenceTask createReferenceTask() {
		ReferenceTaskImpl referenceTask = new ReferenceTaskImpl();
		return referenceTask;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reusable createReusable() {
		ReusableImpl reusable = new ReusableImpl();
		return reusable;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Role createRole() {
		RoleImpl role = new RoleImpl();
		return role;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Script createScript() {
		ScriptImpl script = new ScriptImpl();
		return script;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Send createSend() {
		SendImpl send = new SendImpl();
		return send;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public SequenceFlow createSequenceFlow() {
		SequenceFlowImpl sequenceFlow = new SequenceFlowImpl();
		return sequenceFlow;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Service createService() {
		ServiceImpl service = new ServiceImpl();
		return service;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Signal createSignal() {
		SignalImpl signal = new SignalImpl();
		return signal;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public StandardLoopActivity createStandardLoopActivity() {
		StandardLoopActivityImpl standardLoopActivity = new StandardLoopActivityImpl();
		return standardLoopActivity;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Start createStart() {
		StartImpl start = new StartImpl();
		return start;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public SubProcess createSubProcess() {
		SubProcessImpl subProcess = new SubProcessImpl();
		return subProcess;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Task createTask() {
		TaskImpl task = new TaskImpl();
		return task;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Terminate createTerminate() {
		TerminateImpl terminate = new TerminateImpl();
		return terminate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TimeDateExpression createTimeDateExpression() {
		TimeDateExpressionImpl timeDateExpression = new TimeDateExpressionImpl();
		return timeDateExpression;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Timer createTimer() {
		TimerImpl timer = new TimerImpl();
		return timer;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Transaction createTransaction() {
		TransactionImpl transaction = new TransactionImpl();
		return transaction;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public User createUser() {
		UserImpl user = new UserImpl();
		return user;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public WebService createWebService() {
		WebServiceImpl webService = new WebServiceImpl();
		return webService;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivityType createActivityTypeFromString(EDataType eDataType, String initialValue) {
		ActivityType result = ActivityType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertActivityTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public AdHocOrderingTypes createAdHocOrderingTypesFromString(EDataType eDataType, String initialValue) {
		AdHocOrderingTypes result = AdHocOrderingTypes.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertAdHocOrderingTypesToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ArtifactType createArtifactTypeFromString(EDataType eDataType, String initialValue) {
		ArtifactType result = ArtifactType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertArtifactTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public AssignTimeType createAssignTimeTypeFromString(EDataType eDataType, String initialValue) {
		AssignTimeType result = AssignTimeType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertAssignTimeTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ConditionType createConditionTypeFromString(EDataType eDataType, String initialValue) {
		ConditionType result = ConditionType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertConditionTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public DirectionType createDirectionTypeFromString(EDataType eDataType, String initialValue) {
		DirectionType result = DirectionType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertDirectionTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EventDetailType createEventDetailTypeFromString(EDataType eDataType, String initialValue) {
		EventDetailType result = EventDetailType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertEventDetailTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EventType createEventTypeFromString(EDataType eDataType, String initialValue) {
		EventType result = EventType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertEventTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ExclusiveType createExclusiveTypeFromString(EDataType eDataType, String initialValue) {
		ExclusiveType result = ExclusiveType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertExclusiveTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public GatewayType createGatewayTypeFromString(EDataType eDataType, String initialValue) {
		GatewayType result = GatewayType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertGatewayTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ImplementationType createImplementationTypeFromString(EDataType eDataType, String initialValue) {
		ImplementationType result = ImplementationType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertImplementationTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public LoopType createLoopTypeFromString(EDataType eDataType, String initialValue) {
		LoopType result = LoopType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertLoopTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public MI_FlowConditionType createMI_FlowConditionTypeFromString(EDataType eDataType, String initialValue) {
		MI_FlowConditionType result = MI_FlowConditionType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertMI_FlowConditionTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public MI_OrderingType createMI_OrderingTypeFromString(EDataType eDataType, String initialValue) {
		MI_OrderingType result = MI_OrderingType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertMI_OrderingTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ParticipantType createParticipantTypeFromString(EDataType eDataType, String initialValue) {
		ParticipantType result = ParticipantType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertParticipantTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProcessType createProcessTypeFromString(EDataType eDataType, String initialValue) {
		ProcessType result = ProcessType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertProcessTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public StatusType createStatusTypeFromString(EDataType eDataType, String initialValue) {
		StatusType result = StatusType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertStatusTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public SubProcessType createSubProcessTypeFromString(EDataType eDataType, String initialValue) {
		SubProcessType result = SubProcessType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertSubProcessTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TaskType createTaskTypeFromString(EDataType eDataType, String initialValue) {
		TaskType result = TaskType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertTaskTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TestTimeType createTestTimeTypeFromString(EDataType eDataType, String initialValue) {
		TestTimeType result = TestTimeType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertTestTimeTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TransactionMethodType createTransactionMethodTypeFromString(EDataType eDataType, String initialValue) {
		TransactionMethodType result = TransactionMethodType.get(initialValue);
		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
		return result;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String convertTransactionMethodTypeToString(EDataType eDataType, Object instanceValue) {
		return instanceValue == null ? null : instanceValue.toString();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public BpmnPackage getBpmnPackage() {
		return (BpmnPackage)getEPackage();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @deprecated
	 * @generated
	 */
	@Deprecated
	public static BpmnPackage getPackage() {
		return BpmnPackage.eINSTANCE;
	}

} //BpmnFactoryImpl
